package com.itheima.wisdomnext.service;

import com.itheima.wisdomnext.entity.Comment;
import com.itheima.wisdomnext.entity.CommentShow;

import java.util.List;

public interface CommentService {

    /**
     * 获取某个帖子的所有评论（包含用户信息、点赞状态、回复数量等详细信息）
     *
     * @param postId 帖子 ID
     * @param userId 用户 ID（用于判断是否点赞），可为 null
     * @return 评论展示列表
     */
    List<CommentShow> getCommentsByPostIdWithDetails(Integer postId, Integer userId);

    /**
     * 获取指定评论及其所有回复（包含用户信息、点赞状态、回复详情）
     *
     * @param commentId 评论 ID
     * @param userId 用户 ID（用于判断是否点赞），可为 null
     * @return 带详细信息的评论展示对象
     */
    CommentShow getCommentWithReplies(Integer commentId, Integer userId);

    /**
     * 添加一条评论
     *
     * @param comment 评论实体
     */
    void addComment(Comment comment) throws Exception;

    /**
     * 更新评论内容
     *
     * @param comment 评论实体
     * @return 更新后的评论
     */
    Comment updateComment(Comment comment) throws Exception;

    /**
     * 删除评论
     *
     * @param id 评论 ID
     */
    void deleteComment(Integer id) throws Exception;

    /**
     * 获取某评论的回复数量
     *
     * @param commentId 评论 ID
     * @return 回复数量
     */
    int getReplyCountByCommentId(Integer commentId) throws Exception;

    /**
     * 判断指定用户是否点赞了指定评论
     *
     * @param commentId 评论 ID
     * @param userId 用户 ID
     * @return true 表示已点赞，false 表示未点赞
     */
    boolean isCommentLikedByUser(Integer commentId, Integer userId) throws Exception;
}
